#!/bin/bash

# 目录推送
function dir_push() {
    #分支 源码路径
    local SOUND_BRANCH_PATH=$1
    # 分支名称
    local BRANCH_NAME=$2
    # 进入 git 工作目录
    cd $GIT_WORK_DIR
    # 确保在主分支拉取最新
    git checkout master || git checkout -b master
    git pull origin master
    # 检查远程分支是否存在
    if git ls-remote --exit-code --heads origin $BRANCH_NAME; then
        echo "远程分支 $BRANCH_NAME 与存在 无需推送"
        return 0
    fi
    # 推送分支
    echo "推送分支 $BRANCH_NAME"
    # 创建新分支
    git checkout -b "$BRANCH_NAME" || exit 1
    # 可选：支持部分检出
    git config core.sparseCheckout true
    # 使用 --work-tree 指向外部 java 目录
    git --work-tree="$SOUND_BRANCH_PATH" add .
    # 添加 java 文件到 Git
    # 提交更改
    git commit -m "feat: add java $BRANCH_NAME" || {
        echo "⚠️ 无新文件或提交失败，回退分支"
        git checkout master
        git branch -D "$BRANCH_NAME"
        remote 1
    }
    # 推送到远程
    echo "📤 推送分支 '$BRANCH_NAME' 到远程..."
    git push origin "$BRANCH_NAME"

    if [ $? -eq 0 ]; then
        echo "✅ 成功推送分支: $BRANCH_NAME"
    else
        echo "❌ 推送失败: $BRANCH_NAME"
        # 回滚分支
        git checkout master
        git branch -D "$BRANCH_NAME"
        remote 1
        # 可选：重试或报警
    fi

    # 回到主分支
    git checkout master
    echo "----------------------------------------"
}

# 判断压缩包类型 并解压
function check_compress_type() {
    local file=$1
    local out=$2
    # 删除旧数据
    rm -rf $out/*
    mkdir -p $out
    if [[ $file == *.tar.gz ]]; then
        echo "tar.gz"
        tar -zxvf $file -C $out/
    elif [[ $file == *.zip ]]; then
        echo "zip"
        unzip $file -d $out/
    else
        echo "未知压缩包类型"
        return 1
    fi
    ls -1 $out | while read name; do
        if [ -d "$out/$name" ]; then
            # 推送目录
            dir_push "$out/$name" "$name"
            # 删除压缩包
            rm -f $file
        fi
    done

}
# 下载文件
function download() {
    local url=$1
    local dest=$2
   until wget -O $dest $url > /dev/null
   do
       echo "下载失败，等待10秒后重试"
       sleep 10
   done
    echo "下载成功"
    check_compress_type $dest /tmp/git_java_repo/output
}
# 检查工具
command -v wget || (apt-get update && apt-get install -y wget)
# 安装 unzip
command -v unzip || (apt-get update && apt-get install -y unzip)
# 检查 git 是否安装 如果 没有安装 则安装
command -v git || (apt-get update && apt-get install -y git)
# 设置 git 全局
git config --global init.defaultBranch master
# git 工作目录
export GIT_WORK_DIR=/tmp/git_java_repo
# 下载目录
export DOWNLOAD_DIR=$GIT_WORK_DIR/download
# 删除旧数据
rm -rf $GIT_WORK_DIR
mkdir -p $GIT_WORK_DIR
cd $GIT_WORK_DIR || exit 1
# 克隆仓库（带 SSH 支持）
if [ ! -d ".git" ]; then
    echo "🔍 正在克隆仓库: $GIT_PUSH_URL"
    git clone --depth=1 -b master "$GIT_PUSH_URL" .

fi

rm -rf $DOWNLOAD_DIR
mkdir -p $DOWNLOAD_DIR



















